﻿class Joueur extends MovieClip {
	public var Nom:String;
	public var cheminPhoto:String;
	public var Prof:Number;
	public var id:Number;
	public var PosInList:Number;
	public var poste:String;
	public var Position:Position;
	public var ZoneImage:MovieClip;
	public var NomField:MovieClip;
	public var isNew:Boolean;
	public var isRemoved:Boolean;
	public var anotherIsRemoved:Boolean;
	
	
	public function Joueur() {
	}
	
	public function setNom(cNom) {
		this.Nom=cNom;
	}
	
	public function setCheminPhoto(cVal) {
		this.cheminPhoto=cVal;
	}
	
	public function setProf(iProf) {
		Prof=iProf;
	}
	
	public function setPosition(Pos) {
		// Association Joueur <-> Position
		this.Position=Pos;
		Pos.Joueur=this;
		// Positionnement
		this._x=Pos._x;
		this._y=Pos._y;
		// si joueur positionné dans les joueurs dispos et pas d'image, on affiche le nom
		if (this.Position.id >= 24 ) {
			if (this.cheminPhoto == "") {
				this.NomField.text = this.Nom;
			}
			else {
				this.NomField.text = "";
			}
		}
	}
	
	public function calculMove(LES_JOUEURS,LES_POSITIONS,NB_POS) {	
		// Init
		isRemoved=false;
		anotherIsRemoved=false;
		isNew=false;
	
		// On cherche la position la plus proche
		var precision=20;
		var trouve=0;
		var i=0;
		for(i=0; i<NB_POS; i++) {
			if((Math.abs(LES_POSITIONS[i]._x-_x)<precision) &&
		       (Math.abs(LES_POSITIONS[i]._y-_y)<precision)) {
				trouve=1;
				break;
			}
		}
		
		if(trouve==1) {
			var AnciennePos = this.Position;
			var NouvellePos = LES_POSITIONS[i];
			
			if(AnciennePos==NouvellePos) {
				// Meme Position ...
				this.setPosition(NouvellePos);
				return;
			}
				
			// Enlevé ?
			if(NouvellePos.id==0) {
				isRemoved=true;
				if(NouvellePos.Joueur != undefined) NouvellePos.Joueur.removeMovieClip();
				AnciennePos.Joueur = undefined;
				this.setPosition(NouvellePos);
				return;
			}
			
			// Mis
			if(AnciennePos.id==0) {
				isNew=true;
				
				// A la place d'un autre ?
				if(NouvellePos.Joueur != undefined) {
					anotherIsRemoved=true;
					NouvellePos.Joueur.setPosition(AnciennePos);
				}
				this.setPosition(NouvellePos);
				return;
			}
			
			// Echangé sur le terrain
			if(NouvellePos.Joueur != undefined) {
				NouvellePos.Joueur.setPosition(AnciennePos);
				this.setPosition(NouvellePos);
				return;
			}
			
			// Bougé sur le terrain
			else {
				AnciennePos.Joueur=undefined;
				this.setPosition(NouvellePos);
			}
		}
		
		
		// Pas trouvé -> on remet à sa place
		this.setPosition(this.Position);
		return;
		
	}
	
	
}